package com.sskj.common.util;

public class StrUtil {
    /**
     * 字节数组转换成十六进制字符串
     * @param bytes 字节数组
     * @return 十六进制字符串
     */
    public static String toHexStr(byte[] bytes) {
        if (bytes == null || bytes.length == 0) {
            return "";
        }
        StringBuilder sb = new StringBuilder(bytes.length * 2);
        for (byte b : bytes) {
            sb.append(String.format("%02X", b & 0xFF)); // 每个字节转为两位大写十六进制，不加0x和空格
        }
        return sb.toString();
    }

    /**
     * 单个字节转换成十六进制字符串
     * @param b 字节
     * @return 十六进制字符串
     */
    public static String toHexStr(byte b) {
        return String.format("%02X", b & 0xFF);
    }

    /**
     * 判断字符串是否为空白。
     * 如果字符串为 null、空字符串 "" 或仅由空白字符（如空格、制表符等）组成，则返回 true。
     *
     * @param str 待检查的字符串
     * @return 如果为空白则返回 true，否则返回 false
     */
    public static boolean isBlank(String str) {
        if (str == null) {
            return true;
        }
        return str.trim().isEmpty();
    }

    /**
     * 判断字符串是否为非空白。
     * 如果字符串不为 null、且去除首尾空白后长度大于 0，则返回 true。
     * 与 {@link #isBlank(String)} 逻辑相反。
     *
     * @param str 待检查的字符串
     * @return 如果为非空白则返回 true，否则返回 false
     */
    public static boolean isNotBlank(String str) {
        return !isBlank(str);
    }
}
